package dto

import "time"

// -------------- 认证与用户响应 --------------

// UserResponse 单个用户信息响应
type UserResponse struct {
	ID            int64      `json:"id"`              // 用户ID
	Email         string     `json:"email"`           // 用户邮箱
	Username      string     `json:"username"`        // 用户名
	Role          int32      `json:"role"`            // 角色（1-普通用户，2-管理员）
	Status        int32      `json:"status"`          // 状态（1-正常，0-禁用）
	LastLoginTime *time.Time `json:"last_login_time"` // 最后登录时间
	CreatedAt     *time.Time `json:"created_at"`      // 创建时间
	UpdatedAt     *time.Time `json:"updated_at"`      // 更新时间
}

// UserListResult 用户列表查询结果
type UserListResult struct {
	Total int64              `json:"total"` // 总记录数
	Users []UserListResponse `json:"users"` // 用户列表数据
}

// UserListResponse 用户列表响应
type UserListResponse struct {
	ID        uint      `json:"id"`         // 用户ID
	Username  string    `json:"username"`   // 用户名
	Role      string    `json:"role"`       // 用户角色
	CreatedAt time.Time `json:"created_at"` // 创建时间
	UpdatedAt time.Time `json:"updated_at"` // 更新时间
}

// -------------- 统计相关响应 --------------

// UserStatsResponse 用户维度统计响应
type UserStatsResponse struct {
	UserID            int32            `json:"user_id"`             // 用户ID
	Username          string           `json:"username"`            // 用户名
	QuestionCount     int64            `json:"question_count"`      // 出题次数
	PaperCount        int64            `json:"paper_count"`         // 试卷数量
	QuestionTypeStats map[string]int64 `json:"question_type_stats"` // 题目类型分布
	ActivityHours     map[int]int64    `json:"activity_hours"`      // 按小时统计的活跃度
	ActivityDays      map[string]int64 `json:"activity_days"`       // 按天统计的活跃度
}

// SystemStatsResponse 系统维度统计响应
type SystemStatsResponse struct {
	TotalUsers     int64            `json:"total_users"`      // 总用户数
	TotalQuestions int64            `json:"total_questions"`  // 总题目数
	TotalPapers    int64            `json:"total_papers"`     // 总试卷数
	LanguageStats  map[string]int64 `json:"language_stats"`   // 编程语言分布
	AIModelStats   map[string]int64 `json:"ai_model_stats"`   // AI模型使用情况
	PaperSizeStats map[string]int64 `json:"paper_size_stats"` // 试卷题目数量分布
	DailyActivity  map[string]int64 `json:"daily_activity"`   // 每日活跃度
	WeeklyActivity map[string]int64 `json:"weekly_activity"`  // 每周活跃度
}

// UpdateUserResponse 更新用户后的响应
type UpdateUserResponse struct {
	ID        uint      `json:"id"`         // 用户ID
	Username  string    `json:"username"`   // 用户名
	Role      string    `json:"role"`       // 用户角色
	CreatedAt time.Time `json:"created_at"` // 创建时间
	UpdatedAt time.Time `json:"updated_at"` // 更新时间
}

// dto/UserRecordResponse 个人记录响应DTO
type UserRecordResponse struct {
	ID          int32     `json:"id"`           // 记录ID
	Type        string    `json:"type"`         // 类型：question（出题）、paper（组卷）
	Title       string    `json:"title"`        // 标题（题目/试卷名称）
	CreatedAt   time.Time `json:"created_at"`   // 创建时间
	Status      string    `json:"status"`       // 状态（如：草稿、已发布）
	QuestionNum int       `json:"question_num"` // 组卷特有：包含题目数量（可选）
}

// GetUserRecordsQuery 查看个人出题和组卷记录的查询参数
type GetUserRecordsQuery struct {
	RecordType string `form:"record_type" binding:"omitempty,oneof=question paper all"` // 记录类型：question（出题）、paper（组卷）、all（全部）
	Page       int    `form:"page" default:"1" binding:"min=1"`                         // 页码（默认1，最小1）
	PageSize   int    `form:"page_size" default:"10" binding:"min=1,max=50"`            // 页大小（默认10，1-50之间）
}
